import os
import pandas as pd


def calculate_variance_and_deviation(file_name):
    # 指定读取文件的目录
    input_directory = "ai_correction_xls"
    input_file_path = os.path.join(input_directory, file_name)

    # 尝试读取现有的 Excel 文件
    try:
        df = pd.read_excel(input_file_path)
    except FileNotFoundError:
        print(f"文件 {file_name} 不存在。")
        return

    # 检查所需列是否存在
    score_columns = ['f分数0', 'f分数1', 'f分数2', 'f分数3', 'f分数4']
    if not all(col in df.columns for col in score_columns):
        print("缺少必要的分数列。")
        return

    # 计算方差和偏差
    variances = []
    deviations = []

    for index, row in df.iterrows():
        scores = row[score_columns].dropna()  # 去掉缺失值
        if len(scores) > 0:
            mean = scores.mean()
            variance = scores.var(ddof=0)  # 使用总体方差
            print(f"variance: {variance}")
            deviation = scores.std(ddof=0)  # 使用总体标准差
            print(f"方差：{variance},偏差：{deviation}")
        else:
            variance = None
            deviation = None

        variances.append(variance)
        deviations.append(deviation)
    # 将方差和偏差添加到 DataFrame 中
    df.insert(loc=7, column='方差', value=variances)  # 在第七列后插入方差
    df.insert(loc=8, column='偏差', value=deviations)  # 在第八列后插入偏差

    # 确保 ai_correction_xls 目录存在
    output_directory = "ai_correction_xls"
    os.makedirs(output_directory, exist_ok=True)  # 创建目录（如果不存在）

    # 更新文件路径，将文件写入 ai_correction_xls 目录
    output_file_path = os.path.join(output_directory, file_name)
    # 将更新后的 DataFrame 写入 Excel 文件
    df.to_excel(output_file_path, index=False)
